home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / QD3DStyle.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  11.5 KB  |  426 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        QD3DStyle.h
  3.  
  4.      Contains:    Q3Style types and routines                                         
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DSTYLE__
  18. #define __QD3DSTYLE__
  19.  
  20. #ifndef __QD3D__
  21.     #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25.  
  26.  
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_STRUCT_ALIGN
  40.     #pragma options align=power
  41. #elif PRAGMA_STRUCT_PACKPUSH
  42.     #pragma pack(push, 2)
  43. #elif PRAGMA_STRUCT_PACK
  44.     #pragma pack(2)
  45. #endif
  46.  
  47. #if PRAGMA_ENUM_ALWAYSINT
  48.     #pragma enumsalwaysint on
  49. #elif PRAGMA_ENUM_OPTIONS
  50.     #pragma option enum=int
  51. #elif PRAGMA_ENUM_PACK
  52.     #if __option(pack_enums)
  53.         #define PRAGMA_ENUM_PACK__QD3DSTYLE__
  54.     #endif
  55.     #pragma options(!pack_enums)
  56. #endif
  57.  
  58. /******************************************************************************
  59.  **                                                                             **
  60.  **                    Style Base Class Routines                                 **
  61.  **                                                                             **
  62.  *****************************************************************************/
  63. EXTERN_API_C( TQ3ObjectType )
  64. Q3Style_GetType                    (TQ3StyleObject         style);
  65.  
  66. EXTERN_API_C( TQ3Status )
  67. Q3Style_Submit                    (TQ3StyleObject         style,
  68.                                  TQ3ViewObject             view);
  69.  
  70.  
  71. /******************************************************************************
  72.  **                                                                             **
  73.  **                                 Subdivision                                 **
  74.  **                                                                             **
  75.  *****************************************************************************/
  76.  
  77. enum TQ3SubdivisionMethod {
  78.     kQ3SubdivisionMethodConstant = 0,
  79.     kQ3SubdivisionMethodWorldSpace = 1,
  80.     kQ3SubdivisionMethodScreenSpace = 2
  81. };
  82. typedef enum TQ3SubdivisionMethod TQ3SubdivisionMethod;
  83.  
  84.  
  85.  
  86. struct TQ3SubdivisionStyleData {
  87.     TQ3SubdivisionMethod             method;
  88.     float                             c1;
  89.     float                             c2;
  90. };
  91. typedef struct TQ3SubdivisionStyleData    TQ3SubdivisionStyleData;
  92. EXTERN_API_C( TQ3StyleObject )
  93. Q3SubdivisionStyle_New            (const TQ3SubdivisionStyleData * data);
  94.  
  95. EXTERN_API_C( TQ3Status )
  96. Q3SubdivisionStyle_Submit        (const TQ3SubdivisionStyleData * data,
  97.                                  TQ3ViewObject             view);
  98.  
  99. EXTERN_API_C( TQ3Status )
  100. Q3SubdivisionStyle_SetData        (TQ3StyleObject         subdiv,
  101.                                  const TQ3SubdivisionStyleData * data);
  102.  
  103. EXTERN_API_C( TQ3Status )
  104. Q3SubdivisionStyle_GetData        (TQ3StyleObject         subdiv,
  105.                                  TQ3SubdivisionStyleData * data);
  106.  
  107.  
  108. /******************************************************************************
  109.  **                                                                             **
  110.  **                                Pick ID                                         **
  111.  **                                                                             **
  112.  *****************************************************************************/
  113. EXTERN_API_C( TQ3StyleObject )
  114. Q3PickIDStyle_New                (unsigned long             id);
  115.  
  116. EXTERN_API_C( TQ3Status )
  117. Q3PickIDStyle_Submit            (unsigned long             id,
  118.                                  TQ3ViewObject             view);
  119.  
  120. EXTERN_API_C( TQ3Status )
  121. Q3PickIDStyle_Get                (TQ3StyleObject         pickIDObject,
  122.                                  unsigned long *        id);
  123.  
  124. EXTERN_API_C( TQ3Status )
  125. Q3PickIDStyle_Set                (TQ3StyleObject         pickIDObject,
  126.                                  unsigned long             id);
  127.  
  128.  
  129. /******************************************************************************
  130.  **                                                                             **
  131.  **                                Pick Parts                                     **
  132.  **                                                                             **
  133.  *****************************************************************************/
  134.  
  135. enum TQ3PickPartsMasks {
  136.     kQ3PickPartsObject            = 0,
  137.     kQ3PickPartsMaskFace        = 1 << 0,
  138.     kQ3PickPartsMaskEdge        = 1 << 1,
  139.     kQ3PickPartsMaskVertex        = 1 << 2
  140. };
  141. typedef enum TQ3PickPartsMasks TQ3PickPartsMasks;
  142.  
  143.  
  144. typedef unsigned long                     TQ3PickParts;
  145. EXTERN_API_C( TQ3StyleObject )
  146. Q3PickPartsStyle_New            (TQ3PickParts             parts);
  147.  
  148. EXTERN_API_C( TQ3Status )
  149. Q3PickPartsStyle_Submit            (TQ3PickParts             parts,
  150.                                  TQ3ViewObject             view);
  151.  
  152. EXTERN_API_C( TQ3Status )
  153. Q3PickPartsStyle_Get            (TQ3StyleObject         pickPartsObject,
  154.                                  TQ3PickParts *            parts);
  155.  
  156. EXTERN_API_C( TQ3Status )
  157. Q3PickPartsStyle_Set            (TQ3StyleObject         pickPartsObject,
  158.                                  TQ3PickParts             parts);
  159.  
  160.  
  161. /******************************************************************************
  162.  **                                                                             **
  163.  **                        Receive Shadows                                         **
  164.  **                                                                             **
  165.  *****************************************************************************/
  166. EXTERN_API_C( TQ3StyleObject )
  167. Q3ReceiveShadowsStyle_New        (TQ3Boolean             receives);
  168.  
  169. EXTERN_API_C( TQ3Status )
  170. Q3ReceiveShadowsStyle_Submit    (TQ3Boolean             receives,
  171.                                  TQ3ViewObject             view);
  172.  
  173. EXTERN_API_C( TQ3Status )
  174. Q3ReceiveShadowsStyle_Get        (TQ3StyleObject         styleObject,
  175.                                  TQ3Boolean *            receives);
  176.  
  177. EXTERN_API_C( TQ3Status )
  178. Q3ReceiveShadowsStyle_Set        (TQ3StyleObject         styleObject,
  179.                                  TQ3Boolean             receives);
  180.  
  181.  
  182. /******************************************************************************
  183.  **                                                                             **
  184.  **                            Fill Styles                                         **
  185.  **                                                                             **
  186.  *****************************************************************************/
  187.  
  188. enum TQ3FillStyle {
  189.     kQ3FillStyleFilled            = 0,
  190.     kQ3FillStyleEdges            = 1,
  191.     kQ3FillStylePoints            = 2
  192. };
  193. typedef enum TQ3FillStyle TQ3FillStyle;
  194.  
  195.  
  196. EXTERN_API_C( TQ3StyleObject )
  197. Q3FillStyle_New                    (TQ3FillStyle             fillStyle);
  198.  
  199. EXTERN_API_C( TQ3Status )
  200. Q3FillStyle_Submit                (TQ3FillStyle             fillStyle,
  201.                                  TQ3ViewObject             view);
  202.  
  203. EXTERN_API_C( TQ3Status )
  204. Q3FillStyle_Get                    (TQ3StyleObject         styleObject,
  205.                                  TQ3FillStyle *            fillStyle);
  206.  
  207. EXTERN_API_C( TQ3Status )
  208. Q3FillStyle_Set                    (TQ3StyleObject         styleObject,
  209.                                  TQ3FillStyle             fillStyle);
  210.  
  211.  
  212. /******************************************************************************
  213.  **                                                                             **
  214.  **                            Backfacing Styles                                 **
  215.  **                                                                             **
  216.  *****************************************************************************/
  217.  
  218. enum TQ3BackfacingStyle {
  219.     kQ3BackfacingStyleBoth        = 0,
  220.     kQ3BackfacingStyleRemove    = 1,
  221.     kQ3BackfacingStyleFlip        = 2
  222. };
  223. typedef enum TQ3BackfacingStyle TQ3BackfacingStyle;
  224.  
  225. EXTERN_API_C( TQ3StyleObject )
  226. Q3BackfacingStyle_New            (TQ3BackfacingStyle     backfacingStyle);
  227.  
  228. EXTERN_API_C( TQ3Status )
  229. Q3BackfacingStyle_Submit        (TQ3BackfacingStyle     backfacingStyle,
  230.                                  TQ3ViewObject             view);
  231.  
  232. EXTERN_API_C( TQ3Status )
  233. Q3BackfacingStyle_Get            (TQ3StyleObject         backfacingObject,
  234.                                  TQ3BackfacingStyle *    backfacingStyle);
  235.  
  236. EXTERN_API_C( TQ3Status )
  237. Q3BackfacingStyle_Set            (TQ3StyleObject         backfacingObject,
  238.                                  TQ3BackfacingStyle     backfacingStyle);
  239.  
  240.  
  241. /******************************************************************************
  242.  **                                                                             **
  243.  **                            Interpolation Types                                 **
  244.  **                                                                             **
  245.  *****************************************************************************/
  246.  
  247. enum TQ3InterpolationStyle {
  248.     kQ3InterpolationStyleNone    = 0,
  249.     kQ3InterpolationStyleVertex    = 1,
  250.     kQ3InterpolationStylePixel    = 2
  251. };
  252. typedef enum TQ3InterpolationStyle TQ3InterpolationStyle;
  253.  
  254. EXTERN_API_C( TQ3StyleObject )
  255. Q3InterpolationStyle_New        (TQ3InterpolationStyle     interpolationStyle);
  256.  
  257. EXTERN_API_C( TQ3Status )
  258. Q3InterpolationStyle_Submit        (TQ3InterpolationStyle     interpolationStyle,
  259.                                  TQ3ViewObject             view);
  260.  
  261. EXTERN_API_C( TQ3Status )
  262. Q3InterpolationStyle_Get        (TQ3StyleObject         interpolationObject,
  263.                                  TQ3InterpolationStyle * interpolationStyle);
  264.  
  265. EXTERN_API_C( TQ3Status )
  266. Q3InterpolationStyle_Set        (TQ3StyleObject         interpolationObject,
  267.                                  TQ3InterpolationStyle     interpolationStyle);
  268.  
  269.  
  270. /******************************************************************************
  271.  **                                                                             **
  272.  **                                Highlight Style                                 **
  273.  **                                                                             **
  274.  *****************************************************************************/
  275. EXTERN_API_C( TQ3StyleObject )
  276. Q3HighlightStyle_New            (TQ3AttributeSet         highlightAttribute);
  277.  
  278. EXTERN_API_C( TQ3Status )
  279. Q3HighlightStyle_Submit            (TQ3AttributeSet         highlightAttribute,
  280.                                  TQ3ViewObject             view);
  281.  
  282. EXTERN_API_C( TQ3Status )
  283. Q3HighlightStyle_Get            (TQ3StyleObject         highlight,
  284.                                  TQ3AttributeSet *        highlightAttribute);
  285.  
  286. EXTERN_API_C( TQ3Status )
  287. Q3HighlightStyle_Set            (TQ3StyleObject         highlight,
  288.                                  TQ3AttributeSet         highlightAttribute);
  289.  
  290.  
  291. /******************************************************************************
  292.  **                                                                             **
  293.  **                            FrontFacing Direction Styles                     **
  294.  **                                                                             **
  295.  *****************************************************************************/
  296.  
  297. enum TQ3OrientationStyle {
  298.     kQ3OrientationStyleCounterClockwise = 0,
  299.     kQ3OrientationStyleClockwise = 1
  300. };
  301. typedef enum TQ3OrientationStyle TQ3OrientationStyle;
  302.  
  303. EXTERN_API_C( TQ3StyleObject )
  304. Q3OrientationStyle_New            (TQ3OrientationStyle     frontFacingDirection);
  305.  
  306. EXTERN_API_C( TQ3Status )
  307. Q3OrientationStyle_Submit        (TQ3OrientationStyle     frontFacingDirection,
  308.                                  TQ3ViewObject             view);
  309.  
  310. EXTERN_API_C( TQ3Status )
  311. Q3OrientationStyle_Get            (TQ3StyleObject         frontFacingDirectionObject,
  312.                                  TQ3OrientationStyle *    frontFacingDirection);
  313.  
  314. EXTERN_API_C( TQ3Status )
  315. Q3OrientationStyle_Set            (TQ3StyleObject         frontFacingDirectionObject,
  316.                                  TQ3OrientationStyle     frontFacingDirection);
  317.  
  318.  
  319. /******************************************************************************
  320.  **                                                                             **
  321.  **                                AntiAlias Style                                 **
  322.  **                                                                             **
  323.  *****************************************************************************/
  324.  
  325. enum TQ3AntiAliasModeMasks {
  326.     kQ3AntiAliasModeMaskEdges    = 1 << 0,
  327.     kQ3AntiAliasModeMaskFilled    = 1 << 1
  328. };
  329. typedef enum TQ3AntiAliasModeMasks TQ3AntiAliasModeMasks;
  330.  
  331. typedef unsigned long                     TQ3AntiAliasMode;
  332.  
  333. struct TQ3AntiAliasStyleData {
  334.     TQ3Switch                         state;
  335.     TQ3AntiAliasMode                 mode;
  336.     float                             quality;
  337. };
  338. typedef struct TQ3AntiAliasStyleData    TQ3AntiAliasStyleData;
  339. EXTERN_API_C( TQ3StyleObject )
  340. Q3AntiAliasStyle_New            (const TQ3AntiAliasStyleData * data);
  341.  
  342. EXTERN_API_C( TQ3Status )
  343. Q3AntiAliasStyle_Submit            (const TQ3AntiAliasStyleData * data,
  344.                                  TQ3ViewObject             view);
  345.  
  346. EXTERN_API_C( TQ3Status )
  347. Q3AntiAliasStyle_GetData        (TQ3StyleObject         styleObject,
  348.                                  TQ3AntiAliasStyleData * data);
  349.  
  350. EXTERN_API_C( TQ3Status )
  351. Q3AntiAliasStyle_SetData        (TQ3StyleObject         styleObject,
  352.                                  const TQ3AntiAliasStyleData * data);
  353.  
  354.  
  355. /******************************************************************************
  356.  **                                                                             **
  357.  **                                    Fog Style                                 **
  358.  **                                                                             **
  359.  *****************************************************************************/
  360.  
  361. enum TQ3FogMode {
  362.     kQ3FogModeLinear            = 0,
  363.     kQ3FogModeExponential        = 1,
  364.     kQ3FogModeExponentialSquared = 2,
  365.     kQ3FogModeAlpha                = 3
  366. };
  367. typedef enum TQ3FogMode TQ3FogMode;
  368.  
  369.  
  370. struct TQ3FogStyleData {
  371.     TQ3Switch                         state;
  372.     TQ3FogMode                         mode;
  373.     float                             fogStart;
  374.     float                             fogEnd;
  375.     float                             density;
  376.     TQ3ColorARGB                     color;
  377. };
  378. typedef struct TQ3FogStyleData            TQ3FogStyleData;
  379. EXTERN_API_C( TQ3StyleObject )
  380. Q3FogStyle_New                    (const TQ3FogStyleData * data);
  381.  
  382. EXTERN_API_C( TQ3Status )
  383. Q3FogStyle_Submit                (const TQ3FogStyleData * data,
  384.                                  TQ3ViewObject             view);
  385.  
  386. EXTERN_API_C( TQ3Status )
  387. Q3FogStyle_GetData                (TQ3StyleObject         styleObject,
  388.                                  TQ3FogStyleData *        data);
  389.  
  390. EXTERN_API_C( TQ3Status )
  391. Q3FogStyle_SetData                (TQ3StyleObject         styleObject,
  392.                                  const TQ3FogStyleData * data);
  393.  
  394.  
  395.  
  396.  
  397.  
  398. #if PRAGMA_ENUM_ALWAYSINT
  399.     #pragma enumsalwaysint reset
  400. #elif PRAGMA_ENUM_OPTIONS
  401.     #pragma option enum=reset
  402. #elif defined(PRAGMA_ENUM_PACK__QD3DSTYLE__)
  403.     #pragma options(pack_enums)
  404. #endif
  405.  
  406. #if PRAGMA_STRUCT_ALIGN
  407.     #pragma options align=reset
  408. #elif PRAGMA_STRUCT_PACKPUSH
  409.     #pragma pack(pop)
  410. #elif PRAGMA_STRUCT_PACK
  411.     #pragma pack()
  412. #endif
  413.  
  414. #ifdef PRAGMA_IMPORT_OFF
  415. #pragma import off
  416. #elif PRAGMA_IMPORT
  417. #pragma import reset
  418. #endif
  419.  
  420. #ifdef __cplusplus
  421. }
  422. #endif
  423.  
  424. #endif /* __QD3DSTYLE__ */
  425.  
  426.